本篇介绍 回顾下Camera1,使用起来需要开发关注很多细节,Camera2可以帮助开发自动处理很多细节,可是使用上就特别复杂,Android就提供了Camerax,既简单又好用,本篇介绍下使用方法。 使用步骤 申请权限 <uses-permission android:name="android.permission.CAMERA" /> 动态申请: private void requestPermission (); } } }, ContextCompat.getMainExecutor(this)); 这就是打开Camera,并且将采集数据渲染出来的全部代码了
[1240] 如果你曾经用过 Android 的 Camera APIs,你可能已经感受到了,它们一直没有成为最容易实现的东西。 配置 CameraX CameraX 由两个概念来完成实现 -- Camera View 和 Camera Core。 [1240] 首先在应用的 manifest 添加 Camera 权限: <uses-permission android:name="android.permission.CAMERA" /> 然后, 你可能注意到了,这里有两个不同的依赖: Camera Core 库为使用 CameraX 库提供了必要的类 CameraX Camera2 依赖提供了一些互操作功能所以我们能够在 CameraX 中集成一些已有的 我们能够在布局文件里直接添加这个组件: <androidx.camera.view.CameraView android:id="@+id/view_camera" android:layout_width
前言 主要是CameraX中一些关键知识点的汇总介绍。并不会完整介绍CameraX的使用。 更多的是一些概念和注意点,以及名词介绍等内容。 2 CameraX 和 Camera2的区别 Android 现在使用相机主要是通过CameraX和Camera2。常见应用的开发使用CameraX库调用相机就可以了。 将这一整套方法库封装成了CameraX,后来合并到Jetpack库中。 2.1 CameraX的特点: 总结一下CameraX的一些特点,一家之言。仅供参考。 支持Android API 21 及以上版本,覆盖现有Android设备的98%以上。(数据是官方提供的,更低版本不支持) 易用性高:直接处理封装了预览,图片分析,图片拍摄,视频拍摄。 1024 * 1024; setIFrameInterval():帧间隔,默认1; setAudioBitRate():音频比特率,默认为64000; setAudioSampleRate():音频采集频率
前言 接上一篇《Android CameraX NDK OpenCV(二)-- 实现Dnn人脸检测》,本篇我们直接在这个基础上做一个小玩意----人脸替换贴图,其实现在相机里很多都有这个功能了,这里就简单的实现一下 <TextView android:id="@+id/tvStatus" android:layout_width="wrap_content" android :layout_height="40dp" android:layout_marginBottom="24dp" android:textSize="13pt" android:gravity="center" android:text="TextView" android:textColor="@color/design_default_color_secondary android:id="@+id/btnchange" android:layout_width="wrap_content" android:layout_height
本文我们会向大家简要介绍 Android Jetpack 组件中的 CameraX 库,以及 Beta 版本中的更新。 : 用于解析相机采集到的数据流; ImageCapture: 用于拍摄高质量照片。 开始使用 CameraX Beta 并和我们一起改善用户在 Android 上的相机体验吧。 详细了解 CameraX,请参阅以下资源: 官方文档: developer.android.google.cn/camerax 官方示例代码 github.com/android/cam… Google Groups 讨论群租 groups.google.com/a/android.c… 我们也在去年的 Android 开发者峰会中与大家分享了 CameraX 库的介绍和用法,请查看下面的视频回顾:
前言 上一篇《Android CameraX NDK OpenCV(一)--实时灰度图预览》已经把Android下OpenCV的Ndk配置完成,并且实现了实时灰度图的显示,本篇来看看在Android下使用 GIF动图 视频效果 划重点 从上面的效果很仔细的话可以看到,我们检测人脸到画上红色矩形框时偶尔会有延时的情况,这个在《Android JetPack组件CameraX使用及修改显示图像》中说过,我们在摄像机预览中上层加入了 还要注意的一点是加载的人脸检测的模型文件,因为要在NDK中加载并初始化,所以在程序中我们要考虑怎么拷模型文件先复制到Android设备本地,然后调用JNI的方法去加载模型文件。 代码部分 ? faceDetect.Detect(src); if(outRects.size()>0){ jclass rect_jcls = env->FindClass("android
起源 针对相机开发涉及专业知识多,且Camera2使用复杂等痛点,在2019年的Google I/O大会上,Google推出了一个新的Jetpack组件--CameraX,这个支持包的作用为: help you make camera app development easier 优势 适用大部分android设备,且向后兼容至Android5.0(API level 21) 基于Use Case设计 ,api使用简单,且代码量更少 与Lifecycle组件结合,自动管理相机的生命周期 与主流手机厂商合作,通过CameraX可以使用手机厂商系统相机app独有的人像,美颜,hdr等效果 基本使用 CameraX Case进行设计,使调用者专注于需要完成的任务,而无需花时间处理不同设备的细微差别, 目前包括三种基本用例: Preview Image Analysis Capture 不管是预览还是图像分析,图片拍摄,CameraX 然后将OES纹理绘制到OpenGL对应的Surface上 DEMO https://github.com/sifutang/camerax_demo.git demo效果: ?
今天这篇主要是说说Android JepPack组件中CameraX的使用,其实网上也有不少简单的例子,本篇也是参考了网的一篇文章后实现的。 划重点 要在CameraX中实现图像上显示修改的图像,需要在PreviewView的上层再自己写一个View,使用Canvas.draw的方式进行绘制显示,而无法直接在Preview中进行图像的更改。 这个和我以前文章《Android通过OpenCV和TesserartOCR实时进行识别》直接在OpenCV中修改了图像后在通过SurfaceView显示是完全不一样的。 CameraX的使用 ? > <dem.vaccae.camerax.ViewOverLay android:id="@+id/viewOverlay" android:layout_width 通过上面的代码,一个简单的Camera的效果就实现了,可以看出来,用CameraX的调用,要比原来Camera写起来简单了好多,不过要注意一点是CameraX就是Camera2的封装,所以Android
——《微卡智享》 本文长度为5350字,预计阅读11分钟 前言 上一篇《Android JetPack组件CameraX使用及修改显示图像》已经实现了CameraX的相机预览使用,所以要结合OpenCV (android ndk方式)准备做点小东西,所以就先按最简单的实时灰度图显示来验证效果。 搭建环境 摄像机预览:JetPack CameraX OpenCV版本:4.5 NDK版本:21.1.6352462 CMake版本:3.10.2 开发语言:kotlin 实现效果 ? 直接将两个文件夹拷贝到了创建的android项目默认生成的libs的文件夹下。 02 OpenCV头文件 ? 调试中发现,ImageProxy中生成的图像默认是720*1280,上图中左上角的文字也显示了出来,而CameraX的预览里面Android内部已经把图像的缩放显示都集中进去了,所以我们如果直接按原图画上后
自定义相机滤镜 ),但是运行起来有点卡顿,这次用Camerax来实现一样的效果发现很流畅,在此记录一下,也希望能帮到有需要的同学。 实现效果 image.png 实现步骤 1.引入依赖库 这里我引入的依赖库有CameraX、GPUImage(滤镜库)、Utilcodex(一款好用的工具类) // CameraX core library using camera2 implementation implementation "androidx.camera:camera-camera2:1.0.1" // CameraX Lifecycle Library implementation "androidx.camera:camera-lifecycle:1.0.1" // CameraX View class implementation )里面的libyuv,如下 image.png 3.编写CameraX预览代码 布局代码如下 <?
通过CameraX实现录像功能的话,初始化相机的步骤与拍照时大同小异,区别在于增加了对视频捕捉器VideoCapture的处理。需要修改的代码主要有三个地方,分别说明如下。 -- 相机 --> <uses-permission android:name="android.permission.CAMERA" /> <! -- 录音 --> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <! -- 存储卡读写 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission 点此查看Android开发笔记的完整目录
Android的SDK一开始就自带了相机工具Camera,从Android5.0开始又推出了升级版的camera2,然而不管是初代的Camera还是二代的camera2,编码过程都比较繁琐,对于新手而言有点艰深 -- 相机 --> <uses-permission android:name="android.permission.CAMERA" /> <! android:name="android.permission.READ_EXTERNAL_STORAGE" /> 由于CameraX来自Jetpack库,因此要修改模块的build.gradle, 往dependencies节点添加以下几配置,表示导入指定版本的camerax库: // camerax库各版本见 https://mvnrepository.com/artifact/androidx.camera 点此查看Android开发笔记的完整目录
添加依赖 // CameraX core library def camerax_version = "1.0.0-beta01" implementation "androidx.camera:camera-core :$camerax_version" // CameraX Camera2 extensions implementation "androidx.camera:camera-camera2:$camerax_version " // CameraX Lifecycle library implementation "androidx.camera:camera-lifecycle:$camerax_version" :id="@+id/view_finder" android:layout_width="match_parent" android:layout_height="match_parent 最后发现新建的工程compileSdkVersion和targetSdkVersion是29,运行的真机是Android8.1的版本,所以把这两项改小得以解决 3. debug时偶现空指针导致闪退 ?
《Android NDK编程(七)--- JNI中List结构的类数据返回》文章中有简单的介绍过返回实体类的方式,在这里我们就用到了从JNI中返回列表实体的实现。 01 定义实体类 ? package lib.vaccae.opencv import android.graphics.Pointimport android.graphics.PointF /** * 作者:Vaccae pts_cls, "add", "(Ljava/lang/Object;)Z"); //定义实例化Point的方法 jclass pt_cls = env->FindClass("android
音视频开发基础知识(1)——图像基本概念 给Android工程师的音视频教程之一文弄懂MediaCodec 1. 整体流程 以手机直播为例,其整体流程如下: 2. 数据采集 2.1. 在 Android 系统中,一般使用 AudioRecord 或者 MediaRecord 来采集音频。 2.2 视频采集 视频采集涉及到以下几点: 检测摄像头是否可以使用; 摄像头采集到的图像是横向的,需要对采集到的图像进行一定的旋转后再进行显示; 摄像头采集时有一系列的图像大小可以选择,当采集的图像大小和手机屏幕大小比例不一致时 在 Android 系统下有三套 API 可以进行视频采集,它们是 Camera 和 Camera2还有CameraX 。 需要用到的技术 涉及到如下技术,我将从图像、音频、视频的顺序来罗列: Camera、Camera2、CameraX。
1) CameraX 是一个 Jetpack 库,最低版本是兼容到Android5.0。好学的同学们,肯定又会问,那Jetpack库又是啥呢? 二、 Google为啥要推出CameraX? 关于这点,从前面Android Jetpack库的介绍里面,其实我们也基本可以知道原因了。 这个库是为了方便我们在各个Android版本和Android设备直接的适配和兼容。 官方的介绍是这样的: CameraX 是 Jetpack 的新增库。利用该库,可以更轻松地向应用添加相机功能。 主要优势表现为以下几点: 1)广泛的设备兼容性 CameraX 支持搭载 Android 5.0(API 级别 21)或更高版本的设备,覆盖现有 Android 设备的 98% 以上。 hl=zh-cn CameraX架构 https://developer.android.google.cn/training/camerax/architecture?
深度测试包含 50 个 OEM 厂商设备,覆盖约 2 亿日活设备 在 Mobile Harness 上测试超过 500 种设备,包括 NBU/Android Go 设备。 △ 在 I/O'19 上用 Camera360 现场演示 CameraX 核心功能 我们看到,Camera360 在一台运行着 Android 6.0 Marshmallow 的设备上即可流畅运行,而且使用到了 CameraX,有兴趣的朋友可以观看完整视频: Android Jetpack:了解摄像头支持库 CameraX 觉得视频太长的话,我们也综合 CameraX 的诞生历程为您整理了一份摘要: CameraX 在该支持库诞生之初就已经有数个 Android 顶级开发团队 (包括 Snapchat, Twitter 以及 TikTok 等) 表示会在自己的应用中使用。 △ 通过 CameraX,Android 开发现在就可以轻松实现夜间拍照功能。
Android 相机开发中的尺寸和方向问题 https://glumes.com/post/android/android-camera-aspect-ratio-and-orientation/ Android Camera 模型及 API 接口演变 https://glumes.com/post/android/android-camrea-api-evolution/ 对于一个简单能用的 Camera :camera-camera2:${camerax_version}" CameraX 向后兼容到 Android 5.0(API Level 21),并且它是基于 Camera 2.0 的 API 进行封装的 () 关于预览的参数配置,如果你有看过之前的文章:Android 相机开发中的尺寸和方向问题 想必就会很了解了。 v=kuv8uK-5CLY https://proandroiddev.com/android-camerax-preview-analyze-capture-1b3f403a9395 文章推荐 一文读懂
AE 对于照片的整体质量控制得很好,但是更高的曝光确实能够捕获到 Android 公仔的更多画面细节。 CameraX 曝光补偿 API 的可用性 曝光补偿 API 是在 android.camera:camera-core:1.0.0-beta09 中首次以实验方式发布。 该 API 在版本 android.camera:camera-core:1.1.0-alpha06 中完成了实验阶段,成为正式版本 CameraX API 的一部分。 结合 CameraX API 的其它部分,曝光补偿 API 可以帮助开发者实现富有创意的 Android 相机应用,并在移动应用的海洋中脱颖而出。 如果您有兴趣了解更多关于 CameraX 的内容,请参阅 官方文档,如果希望能够持续获得 CameraX 的最新进展,可以加入 CameraX 讨论组。
而 Renderscript 是面向计算密集型任务 (比如从 YUV 转换为 RGB 格式) 的一个候选方案,然而从 Android 12 开始,这种方法已经被 废弃 了。 ImageProxy 是 media.image 的一个封装类,它是 Android framework 中提供的一个图片缓冲。 原则上 Android framework 支持的图像缓冲区格式是 PixelFormat 和 ImageFormat 的子集。 性能 我们做了一些性能测试,并与在不同的 Android 版本和设备上使用 Renderscript 的结果进行了比较。 总体上来说,在不同分辨率和 Android 系统版本上,使用 libyuv 的 pipeline 要优于使用 Renderscript 的实现。